package b;

import 其他.DataStructure.TreeNode;

import java.util.ArrayList;
import java.util.List;

public class _2_二叉树到叶子找目标和路径 {
     List<List<Integer>> res = new ArrayList<>();
     List<Integer> tmp = new ArrayList<>();
    public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
        //二叉树找tar路径
        TreeNode ci=root; int tS =targetSum;
        ecs_tar(ci,tS);
        return res;
    }

    private void ecs_tar(TreeNode ci, int tS) {
        //N单纯r不管即可
        if(ci==null)return;

        int cS=tS-ci.val;
        //t+t-夹着，符合子集风格
        tmp.add(ci.val);
        if(ci.left==null&&ci.right==null && cS==0)res.add(new ArrayList<>(tmp));//收集一次即可，再收集就重了
        ecs_tar(ci.left,cS); tmp.remove(tmp.size()-1);                                              tmp.add(ci.val); ecs_tar(ci.right,cS); tmp.remove(tmp.size()-1);
    }
}
